package hongcaosp.app.android.user.collect;

import java.util.ArrayList;
import java.util.List;

import hongcaosp.app.android.common.IListView;
import hongcaosp.app.android.login.UserToken;
import hongcaosp.app.android.modle.DataCallBack;
import hongcaosp.app.android.modle.bean.IVideo;
import hongcaosp.app.android.modle.bean.Pagebean;
import hongcaosp.app.android.modle.bean.Video;
import hongcaosp.app.android.modle.impl.CollectModleImpl;
import hongcaosp.app.android.modle.impl.UserModleImpl;
import hongcaosp.app.android.modle.mi.CollectModle;
import hongcaosp.app.android.modle.mi.UserModle;
import hongcaosp.app.android.user.TotalCallBack;
import xlj.lib.android.base.component.BasePresenter;
import xlj.lib.android.base.toastcompat.ToastManager;

public class CollectPresenter extends BasePresenter {
    private IListView<IVideo> listView;
    private UserModle userModle;
    private int type;
    private int number;
    private long userId;

    public int getType() {
        return type;
    }

    public int getNumber() {
        return number;
    }

    public long getUserId() {
        return userId;
    }

    public CollectPresenter(IListView<IVideo> listView, int type, long userId) {
        this.listView = listView;
        this.type = type;
        this.userId = userId;
        userModle = new UserModleImpl();
    }

    public void freshData(final TotalCallBack totalCallBack) {
        number = 1;
        DataCallBack<Pagebean<Video>> callBack = new DataCallBack<Pagebean<Video>>() {
            @Override
            public void onGetData(Pagebean<Video> data) {
                super.onGetData(data);
                boolean loadMore = false;
                if (data.getList() != null && data.getTotal() > data.getList().size() ) {
                    loadMore = true;
                }
                List<Video> videos = data.getList();
                List<IVideo> videoList = new ArrayList<>();
                videoList.addAll(videos);
                listView.freshList(videoList,loadMore);
                if (totalCallBack != null) {
                    totalCallBack.onTotalSend(data.getTotal());
                }
            }

            @Override
            public void onFail(int code, String errorMessage) {
                super.onFail(code, errorMessage);
                ToastManager.getInstance().showToast(errorMessage);
                listView.freshList(null,false);
                if (totalCallBack != null) {
                    totalCallBack.onTotalSend(0);
                }
            }
        };
        if (type == 1) {
            userModle.userWorks((int) userId, UserToken.getDefault().getToken(), 20, number, callBack);
        } else {
            userModle.userLoves((int) userId, UserToken.getDefault().getToken(), 20, number, callBack);
        }
//        List<IVideo> favorites = new ArrayList<>();
//        for (int i = 0; i < new Random().nextInt(10); i++) {
//            favorites.add(new IVideo() {
//                @Override
//                public long getVid() {
//                    return 0;
//                }
//
//                @Override
//                public String getVideoUrl() {
//                    return null;
//                }
//
//                @Override
//                public String getVideoImage() {
//                    Random random = new Random();
//                    int jpg = random.nextInt(6);
//                    return "file://android_asset/test/"+jpg + ".png";
//                }
//
//                @Override
//                public String getDescrip() {
//                    return null;
//                }
//
//                @Override
//                public long getLikeCount() {
//                    return 0;
//                }
//
//                @Override
//                public long getCommentCount() {
//                    return 0;
//                }
//
//                @Override
//                public long getPlayCount() {
//                    Random random = new Random();
//                    return random.nextInt(10000) ;
//                }
//
//                @Override
//                public IUser getAuthor() {
//                    return null;
//                }
//
//                @Override
//                public boolean isLiked() {
//                    return false;
//                }
//
//                @Override
//                public void setLike(boolean like) {
//
//                }
//
//                @Override
//                public void setLikeCounts(long count) {
//
//                }
//            });
//        }
//        listView.freshList(favorites,false);
    }

    public void loadMore() {
        number++;
        DataCallBack<Pagebean<Video>> callBack = new DataCallBack<Pagebean<Video>>() {
            @Override
            public void onGetData(Pagebean<Video> data) {
                super.onGetData(data);
                boolean loadMore = false;
                if (data.getList() != null && data.getTotal() > data.getList().size() ) {
                    loadMore = true;
                }
                List<Video> videos = data.getList();
                List<IVideo> videoList = new ArrayList<>();
                videoList.addAll(videos);
                listView.addList(videoList,loadMore);

            }

            @Override
            public void onFail(int code, String errorMessage) {
                super.onFail(code, errorMessage);
                ToastManager.getInstance().showToast(errorMessage);
            }
        };
        if (type == 1) {
            userModle.userWorks((int) userId, UserToken.getDefault().getToken(), 20, number, callBack);
        } else {
            userModle.userLoves((int) userId, UserToken.getDefault().getToken(), 20, number, callBack);
        }
    }
}
